﻿/***************************************************************************
 * 工    具：  HKUtility
 * 
 * 描    述：  非Mono单例工具类
 * 
 * 版    本：  V1.0
 * 作    者：  京产肠饭、谭潇杰
 * 
 * 创    建：  2024/05/01  V1.0
 * 
 * 链    接：  https://gitee.com/JingChanChangFan/hk_-unity-tools
****************************************************************************/

using QFramework;
using System;
using UnityEngine;
using UnityEngine.EventSystems;

public class HKUtility : Singleton<HKUtility>
{
    HKUtility() { }

    /// <summary>
    /// 判断是否点击到UI上了，如果点在UI上则返回 true，如果没点击到UI，则返回false
    /// </summary>
    public bool IsClickUI()
    {
        try
        {
#if ANDROID || IPHONE
        if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
            if (EventSystem.current.IsPointerOverGameObject())
#endif
                return true;
            else
                return false;
        }
        catch (NullReferenceException)
        {
            Debug.LogWarning("EventSystem 不存在!");
            return false;
        }
    }

    /// <summary>
    /// 判断 物体B 是否在 物体A的前方，如果在前方，返回 true，如果在后方，返回 false
    /// </summary>
    public bool IsInTheFront(Transform objA, Transform objB)
    {
        Vector3 directionToB = (objB.position - objA.position).normalized;
        Vector3 forwardA = objA.forward;

        float dotResult = Vector3.Dot(forwardA, directionToB);

        if (dotResult > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    /// <summary>
    /// 判断 物体B 是否在 物体A的右边，如果在右边，返回 true，如果在左边，返回 false
    /// </summary>
    public bool IsOnTheRight(Transform objA, Transform objB)
    {
        Vector3 directionToB = (objB.position - objA.position).normalized;
        Vector3 rightA = objA.transform.right;
        float dotResult = Vector3.Dot(rightA, directionToB);

        if (dotResult > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}